import {openSetting,getSetting,chooseAddress,showModal,login, showToast} from "../../utils/youHuaWxAPI.js";
import { request } from "../../request/request";
import regeneratorRuntime from "../../lib/runtime/runtime";
Page({

  /**
   * 页面的初始数据
   */
  data: {
    userInfo: {},
    collectedNum: 0
  },

  onShow: function () {
    const userInfo = wx.getStorageSync("userInfo");
    const collection = wx.getStorageSync("collection") || [];
    const collectedNum = collection.length;
    this.setData({userInfo,collectedNum});
    
  },

  // 判断用户是否登录，没有登录则提示用户登录
  checkLogin() {
    const {userInfo} = this.data;
    if (userInfo.length === 0) {
      wx.showToast({
        title: '您尚未登录！',
        icon: 'none',
        mask: true
      });
      return false;
    }
    return true;
  },

  // 处理点击登录按钮
  async handleGetUserInfo(e) {
    try {
      // 获取用户的相关个人信息
      const {encryptedData,iv,rawData,signature,userInfo} = e.detail;
      const {code} = await login();
      // 向服务器发送请求获取token
      const 
        url = "/users/wxlogin",
        data = {encryptedData,iv,rawData,signature,code};
      const {token} = await request({url,data,method: "POST"});    
      // console.log(token);
      wx.setStorageSync("token", token);
      wx.setStorageSync("userInfo", userInfo);
      this.setData({userInfo});      
    } catch (err) {
      console.log(err);
    }
  },

  // 处理收货地址管理
  async handleAddressSetting() {
    try 
    {
      // 获取用户授予小程序的权限
      const res = await getSetting();
      const scopeAddress = res.authSetting["scope.address"];
      // 如果用户没授权地址信息 诱导用户开启授权
      if (scopeAddress === false) 
      {
        const flag = await openSetting();     
      }
      // 获取用户地址
      let address = await chooseAddress();
      address.detailAddress = address.provinceName + address.cityName + address.countyName + address.detailInfo;
      // 将用户地址保存到本地缓存中
      wx.setStorageSync("address", address);
      // console.log(address);
    }
    catch(err) 
    {
      console.log(err);
    }
  },

  // 处理意见反馈
  handleFeedback() {
    // 判断用户是否登录，没有登录则提示用户登录
    if (!this.checkLogin()) return;
    wx.navigateTo({
      url: '/pages/feedback/index'
    });
  },

  // 处理关于我们
  handleAboutUs() {
    wx.showToast({
      title: '个人开发，仅供展示！',
      icon: 'none',
    });
  },

  // 处理注销
  async handleLoginOut() {
    let res = await showModal({content: "您要退出登录？"});
    if(res.confirm) 
    {
      try {
        wx.removeStorageSync("userInfo");
        wx.removeStorageSync("token");
        wx.removeStorageSync("address");
        this.onShow();
      } catch (err) {
        console.log(err);
      }
    }         
  },

  // 处理用户查看订单
  readOrderList(e) {
    // 判断用户是否登录，没有登录则提示用户登录
    if (!this.checkLogin()) return;  
    // 获取用户要查看订单的类型（1.全部订单 2.待付款 3.待收货 4.退款/退货）
    const type = e.currentTarget.dataset.val;
    // 实际开发中没有下面这几行
    if (type == 4) {
      wx.showToast({
        title: '此功能正在开发中！',
        icon: 'none',
        mask: true
      });
      return;      
    }
    // 实际开发中没有上面这几行
    // 前往对应类型的订单页面
    wx.navigateTo({
      url: '/pages/order/index?type=' + type
    });
  }

})